home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Amiga Plus Special 25
/
AMIGAplus Sonderheft 25 (2000)(Falke)(DE)(Track 1 of 4)[!].iso
/
libs
/
README
< prev
next >
Wrap
Text File
|
2000-05-08
|
20KB
|
444 lines
README for ixemul.library and ixnet.library version 47.3
IMPORTANT
=========
Always read the NEWS file for information about new features! The NEWS file
is part of the ixemul source archive.
Also look at the ix.h header: ixemul-specific functions are documented in that
header.
Starting with ixemul.library version 42.0 the ssystem() function is no longer
supported. The only two applications use this function are (to my knowledge)
gcc and man. You should either upgrade to the latest gcc (2.7.2 or higher)
or replace gcc by gccv (which is part of older gcc distributions). You can
find a new 'man' version in Geek Gadgets.
Starting with ixemul.library version 43.1 various networking functions have
been moved to libc.a. See the NEWS file for details. It only concerns
certain somewhat specialized functions, so 'normal' clients and daemons
shouldn't be affected.
Starting with ixemul.library version 46.0 some basic p.OS support has been
added, which is completed in 47.0. See README.pOS for more details.
This library is part of Geek Gadgets. For more information see
ftp.ninemoons.com, /pub/geekgadgets.
INTRODUCTION
============
Originally created in 1991 or 1992 by Markus Wild, the ixemul.library has
become the driving force behind the Geek Gadgets project.
Essentially it is a BSD Unix kernel running under the Amiga OS. The
code for handling Unix signals is taken almost verbatim from the BSD kernel
sources, for example. Multitasking and file I/O is, of course, passed on
to the Amiga OS. Because the library resembles BSD Unix so closely, it has
made it possible to port almost all Unix programs.
However, because of the conformance to BSD, the library is not too
conservative with resources or overly concerned with Amiga standards. For
example, command line expansion uses Unix semantics and doesn't use
ReadArgs(). The purpose of ixemul.library is to emulate Unix as well as is
technically possible. So given a choice between Amiga behavior or Unix
behavior, the last one is chosen.
HISTORY
=======
As I mentioned, the library was originally created by Markus Wild. It
allowed him to port Unix programs, most notably gcc and a Unix shell
(pdksh), which in turn gave him the opportunity to start porting NetBSD
Unix. At some point he stopped working on ixemul.library and continued
with the real thing, NetBSD.
Although Markus made some snapshots of his library available on Internet,
he was about the only one who could actually compile it. The snapshots
where never complete and didn't use a standard Make tool.
Rafael W. Luebbert managed around June 1994 to actually compile the
library using bits and pieces from four different source releases. Even
then he had to write some missing code and had to debug a lot before he got
it working. Luebbert released versions 40.1 through 40.4. Since this was
the only version available that could actually be compiled, Fred Fish
switched to version 40.4 for his FreshFish CDROM series.
Leonard Norrgard also started working on 40.4, fixing a variety of
problems. So for a time there were two versions of the library, both
derived from 40.4. Around March 1995 I began contributing my own fixes for
the library to Fred, including a fix for a horrible memory trashing bug
which substantially improved the stability of the library. Starting with
version 42.0 I became the new maintainer of the library. I merged
Leonard's version of the library into 42.0, the whole source distribution
was cleaned up and reorganized and many bugs were fixed. Also new
functionality was added such as timezone support.
Thanks to Jeff Shepherd the support for network functions has been totally
reorganized for version 43.0. A new ixnet.library was introduced that
contains all the network handling. This new library supports both AS225
and AmiTCP. Furthermore, there is no longer any need to maintain two
versions of an Internet client or daemon as ixnet.library will do the
multiplexing for you. The program itself is completely shielded from the
actual networking package in use. Also, should a new networking package
appear for the Amiga, then it is relatively easy to add support for that
package to ixnet.library. All existing programs will automatically be able
to work with the new package too.
Version 43.0 also introduced support for automatic stack extension
(provided you compiled your program with the -mstackextend flag). This
support was done by Matthias Fleischer.
Last, but not least, I've added the ptrace() function, which was essential
for porting the GNU debugger, GDB. So it is now possible to use a decent
debugger with gcc (and with the GNU C++, fortran and ADA compilers).
Version 43.1 was a bug-fix release, which further improved stability.
Version 44.0 made the library much more (Net)BSD compatible, making it even
easier to port Unix programs. Also many bugs were fixed.
Version 45.0 fixed a few bugs, improved stack extension (see the new ixstack
utility) and further improved Ctrl-C handling by adding 'sessions', something
that was needed for the Geek Gadgets X port.
Version 45.1 was a bug-fix release, and also improved uid/gid handling.
Version 46.0 adds shared memory (shm*) and basic p.OS support.
Version 46.1 renames the __os variable to ix_os.
Version 47.0 completes the p.OS support and adds Unix semaphore and message
support. Also fixes several bugs.
Version 47.1 fixes a minor but very irritating bug in the ixstack utility.
Version 47.2 is a bug-fix release.
Version 47.3 is a bug-fix release.
USAGE
=====
The Aminet distribution of ixemul consists of several archives: one for
each flavor (CPU/FPU combination) of the library, one for the timezone
support, an archive for documentation, an archive for various utilities and
an SDK archive, containing headers, libraries and C-objects that provide
the startup code. There is also an ixemul source archive. If you don't
mind recompiling everything, and if you have a decent Geek Gadgets
environment, then all you have to do is retrieve this archive, as all the
other archives are generated from this source distribution.
Besides the library itself, there are also some utilities and other
goodies. First of all, there is a special trace version of the library.
Together with the ixtrace tool it allows you to see which library functions
are called by the program you want to debug. If you compile the library
yourself you will also get, as part of the compile process, a debug version
of the library. If you get an Enforcer hit in the library, and if you have
SegTracker installed, then you can track down in which source and at which
line the hit took place using the gccfindhit tool (available from Aminet
and Geek Gadgets) that is similar to the FindHit tool which is part of the
Enforcer package. I've used this with great success in the past.
Various settings that influence the behavior of the library can be set
using the ixprefs utility. A small tool ixrun allowing you to run AmigaOS
scripts from within the Unix shell is also provided. An ixemul-specific
pipe-handler allows you to set up a pipe between an AmigaOS utility and an
Unix program. A pipe between two Unix programs is handled by the
ixemul.library itself, but since AmigaOS programs are not under the
control of the library, this handler is used instead.
A recent addition is the ixstack tool, which can list and set the minimum
stack size an ixemul program needs. It can also show the actual stack
usage of ixemul programs if you start it with '-s'.
Finally, the tools zic (for manipulating the timezone databases) and
ixtimezone are also part of ixemul. The ixtimezone tool can be used to
automatically adjust the Amiga time based on the currently selected
timezone. The best way to use this tool is to install the timezone
databases (in etc:zoneinfo), set the TZ environment variable correctly (in
my case "Europe/Amsterdam"), add the line "ixtimezone -patch-resource
>nil:" to your user-startup and set the Amiga clock to Greenwich Mean Time
(or Universal Time, as it is now called). Now you will never have to worry
about things like Daylight Saving Time as each time ixtimezone is called,
this tool ch